﻿using System;
using System.Data;
using Aspose.Cells;

namespace TestExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("order", typeof(int)));
            dt.Columns.Add(new DataColumn("name", typeof(string)));

            dt.Rows.Add(new object[] { 1, "zhang" });
            dt.Rows.Add(new object[] { 2, "li" });

            string savePath = @"C:\Users\Superb\Desktop\test2.xlsx";
            //ExportExcelWithAspose(dt, savePath);
            TestHebing();
        }
        public static bool ExportExcelWithAspose(System.Data.DataTable data, string filepath)
        {
            try
            {
                if (data == null)
                {

                    return false;
                }
                // Aspose.Cells.License li = new Aspose.Cells.License();
                // li.SetLicense("ASPOSE/License.lic");//破解证书

                Workbook book = new Workbook(); //创建工作簿
                Worksheet sheet = book.Worksheets[0]; //创建工作表
                Cells cells = sheet.Cells; //单元格
                                           //创建样式
                Aspose.Cells.Style style = book.Styles[book.Styles.Add()];
                style.Borders[Aspose.Cells.BorderType.LeftBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 左边界线  
                style.Borders[Aspose.Cells.BorderType.RightBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 右边界线  
                style.Borders[Aspose.Cells.BorderType.TopBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 上边界线  
                style.Borders[Aspose.Cells.BorderType.BottomBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 下边界线   
                style.HorizontalAlignment = TextAlignmentType.Center; //单元格内容的水平对齐方式文字居中
                style.Font.Name = "宋体"; //字体
                                        //style1.Font.IsBold = true; //设置粗体
                style.Font.Size = 11; //设置字体大小
                                      //style.ForegroundColor = System.Drawing.Color.FromArgb(153, 204, 0); //背景色
                                      //style.Pattern = Aspose.Cells.BackgroundType.Solid;  

                int Colnum = data.Columns.Count;//表格列数 
                int Rownum = data.Rows.Count;//表格行数 
                                             //生成行 列名行 
                for (int i = 0; i < Colnum; i++)
                {
                    cells[0, i].PutValue(data.Columns[i].ColumnName); //添加表头
                    cells[0, i].SetStyle(style); //添加样式
                }
                //生成数据行 
                for (int i = 0; i < Rownum; i++)
                {
                    for (int k = 0; k < Colnum; k++)
                    {
                        cells[1 + i, k].PutValue(data.Rows[i][k].ToString()); //添加数据
                        cells[1 + i, k].SetStyle(style); //添加样式
                    }
                }
                sheet.AutoFitColumns(); //自适应宽
                book.Save(filepath); //保存

                GC.Collect();
            }
            catch (Exception e)
            {
                return false;
            }

            return true;


        }

        public static bool TestHebing()
        {
            string filepath=@"C:\Users\Superb\Desktop\test4.xlsx";
            Workbook book = new Workbook(); //创建工作簿
            Worksheet sheet = book.Worksheets[0]; //创建工作表
            Cells cells = sheet.Cells; //单元格
                                       //创建样式
            Aspose.Cells.Style style = book.Styles[book.Styles.Add()];
            style.Borders[Aspose.Cells.BorderType.LeftBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 左边界线  
            style.Borders[Aspose.Cells.BorderType.RightBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 右边界线  
            style.Borders[Aspose.Cells.BorderType.TopBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 上边界线  
            style.Borders[Aspose.Cells.BorderType.BottomBorder].LineStyle = Aspose.Cells.CellBorderType.Thin; //应用边界线 下边界线   
            style.HorizontalAlignment = TextAlignmentType.Center; //单元格内容的水平对齐方式文字居中
            style.Font.Name = "宋体"; //字体
                                    //style1.Font.IsBold = true; //设置粗体
            style.Font.Size = 11; //设置字体大小
            int Colnum = 3;//表格列数 
            int Rownum = 10;//表格行数 

            cells[0, 0].PutValue("序号"); //添加表头
            cells[0, 0].SetStyle(style); //添加样式
            cells[0, 1].PutValue("名称"); //添加表头
            cells[0, 1].SetStyle(style); //添加样式
            cells[0, 2].PutValue("名称"); //添加表头
            cells[0, 2].SetStyle(style); //添加样式

            cells[1, 0].PutValue("1"); //添加表头
            cells[1, 0].SetStyle(style); //添加样式
            cells[1, 1].PutValue("中文"); //添加表头
            cells[1, 1].SetStyle(style); //添加样式
            cells[2, 1].PutValue("拼音"); //添加表头
            cells[2, 1].SetStyle(style); //添加样式

            cells[1, 2].PutValue("张三"); //添加表头
            cells[1, 2].SetStyle(style); //添加样式

            cells[2, 2].PutValue("zhangsan"); //添加表头
            cells[2, 2].SetStyle(style); //添加样式
            cells.Merge(1, 0, 2, 1);
            sheet.AutoFitColumns(); //自适应宽
            book.Save(filepath); //保存

            GC.Collect();
            return true;
        }
    }
}
